import { defineConfig, loadEnv } from 'vite'
import path from 'path'
import createVitePlugins from './vite/plugins'


import { createHtmlPlugin } from 'vite-plugin-html'
import vueDevTools from 'vite-plugin-vue-devtools'

import UnoCSS from 'unocss/vite'


// import { VitePWA } from 'vite-plugin-pwa'


// https://vitejs.dev/config/
export default defineConfig(({ mode, command }) => {
  const env = loadEnv(mode, process.cwd())
  const { VITE_APP_ENV } = env
  return {
    // 部署生产环境和开发环境下的URL。
    // 默认情况下，vite 会假设你的应用是被部署在一个域名的根路径上
    // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上，你就需要用这个选项指定这个子路径。例如，如果你的应用被部署在 https://www.ruoyi.vip/admin/，则设置 baseUrl 为 /admin/。
    base: VITE_APP_ENV === 'production' ? '/' : '/',
    // base: '/base',

    plugins: [
      vueDevTools(),
      createHtmlPlugin({}),
      createVitePlugins(env, command === 'build'),
      UnoCSS(),
      // VitePWA({
      //   manifest: {
      //     name: '沃伦特瑞后台',
      //     short_name: '沃伦特瑞',
      //     id: 'cs001',
      //     start_url: ".",
      //     description: '沃伦特瑞后台管理系统',
      //     theme_color: '#182330',
      //     icons: [//添加图标， 注意路径和图像像素正确
      //       {
      //         src: 'http://fulefan.asia/profile/system/%E6%B2%83%E4%BC%A6%E7%89%B9%E7%91%9E.png',
      //         // public下
      //         sizes: '512x512',//icon大小要与实际icon大小一致
      //         type: 'image/png',
      //         // form_factor: "handset",
      //       },
      //     ]
      //   },
      //   registerType: 'autoUpdate',
      //   workbox: {
      //     globPatterns: ['**/*.{js,css,html,ico,png,jpg,svg}'],//缓存相关静态资源
      //     runtimeCaching: [// 配置自定义运行时缓存
      //       mode !== 'production'
      //         ? {
      //           urlPattern: ({ url }) => url.origin === 'https://app-api-0.com',
      //           handler: 'NetworkFirst',
      //           options: {
      //             cacheName: 'wisbayar-api',
      //             cacheableResponse: {
      //               statuses: [200]
      //             }
      //           }
      //         }
      //         : {
      //           urlPattern: ({ url }) => url.origin === 'https://app-api.id',
      //           handler: 'NetworkFirst',
      //           options: {
      //             cacheName: 'wisbayar-api',
      //             cacheableResponse: {
      //               statuses: [200]
      //             }
      //           }
      //         },
      //       {
      //         urlPattern: /\.(?:png|jpg|jpeg|svg)$/,
      //         handler: 'CacheFirst',
      //         options: {
      //           cacheName: 'wisbayar-images',
      //           expiration: {
      //             // 最多30个图
      //             maxEntries: 30
      //           }
      //         }
      //       },
      //       {
      //         urlPattern: /.*\.js.*/,
      //         handler: 'StaleWhileRevalidate',
      //         options: {
      //           cacheName: 'wisbayar-js',
      //           expiration: {
      //             maxEntries: 30, // 最多缓存30个，超过的按照LRU原则删除
      //             maxAgeSeconds: 30 * 24 * 60 * 60
      //           },
      //           cacheableResponse: {
      //             statuses: [200]
      //           }
      //         }
      //       },
      //       {
      //         urlPattern: /.*\.css.*/,
      //         handler: 'StaleWhileRevalidate',
      //         options: {
      //           cacheName: 'wisbayar-css',
      //           expiration: {
      //             maxEntries: 20,
      //             maxAgeSeconds: 30 * 24 * 60 * 60
      //           },
      //           cacheableResponse: {
      //             statuses: [200]
      //           }
      //         }
      //       },
      //       {
      //         urlPattern: /.*\.html.*/,
      //         handler: 'StaleWhileRevalidate',
      //         options: {
      //           cacheName: 'wisbayar-html',
      //           expiration: {
      //             maxEntries: 20,
      //             maxAgeSeconds: 30 * 24 * 60 * 60
      //           },
      //           cacheableResponse: {
      //             statuses: [200]
      //           }
      //         }
      //       }
      //     ]
      //   },
      //   devOptions: {
      //     enabled: true
      //   }
      // }),
    ],
    resolve: {
      // https://cn.vitejs.dev/config/#resolve-alias
      alias: {
        // 设置路径
        '~': path.resolve(__dirname, './'),
        // 设置别名
        '@': path.resolve(__dirname, './src'),
        '@plugins': path.resolve(__dirname, './src/plugins'),
        '@router': path.resolve(__dirname, './src/router'),
      },
      // https://cn.vitejs.dev/config/#resolve-extensions
      extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
    },
    // vite 相关配置
    server: {
      port: 80,
      host: true,
      open: true,
      proxy: {
        // https://cn.vitejs.dev/config/#server-proxy
        '/dev-api': {
          target: 'http://localhost:8080',
          changeOrigin: true,
          rewrite: (p) => p.replace(/^\/dev-api/, '')
        }
      }
    },
    //fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file
    css: {
      // 解决scss 报错
      preprocessorOptions: {
        scss: {
          silenceDeprecations: ['legacy-js-api'],
        },
      },
      // 
      postcss: {
        plugins: [
          {
            postcssPlugin: 'internal:charset-removal',
            AtRule: {
              charset: (atRule) => {
                if (atRule.name === 'charset') {
                  atRule.remove();
                }
              }
            }
          }
        ]
      }
    }
  }
})
